<?php

//use Test;

class ExcelController extends \Phalcon\Mvc\Controller
{

    public function indexAction() {
        echo 'this is index.';
    }
    
    
    public function testAction() {
    
        require_once dirname(__FILE__) . '/../lib/PHPExcel.php';

        echo date('H:i:s') , " Create new PHPExcel object" , EOL;

        $objPHPExcel = new PHPExcel();

        // Set document properties
        echo date('H:i:s') , " Set document properties" , EOL;
        $objPHPExcel->getProperties()->setCreator("Maarten Balliauw")
        							 ->setLastModifiedBy("Maarten Balliauw")
        							 ->setTitle("PHPExcel Test Document")
        							 ->setSubject("PHPExcel Test Document")
        							 ->setDescription("Test document for PHPExcel, generated using PHP classes.")
        							 ->setKeywords("office PHPExcel php")
        							 ->setCategory("Test result file");


        // Add some data
        echo date('H:i:s') , " Add some data" , EOL;
        $objPHPExcel->setActiveSheetIndex(0)
                    ->setCellValue('A1', 'Hello')
                    ->setCellValue('B2', 'world!')
                    ->setCellValue('C1', 'Hello')
                    ->setCellValue('D2', 'world!');

        // Miscellaneous glyphs, UTF-8
        $objPHPExcel->setActiveSheetIndex(0)
                    ->setCellValue('A4', 'Miscellaneous glyphs')
                    ->setCellValue('A5', 'éàèùâêîôûëïüÿäöüç');


        $objPHPExcel->getActiveSheet()->setCellValue('A8',"Hello\nWorld");
        $objPHPExcel->getActiveSheet()->getRowDimension(8)->setRowHeight(-1);
        $objPHPExcel->getActiveSheet()->getStyle('A8')->getAlignment()->setWrapText(true);


        // Rename worksheet
        echo date('H:i:s') , " Rename worksheet" , EOL;
        $objPHPExcel->getActiveSheet()->setTitle('Simple');


        // Set active sheet index to the first sheet, so Excel opens this as the first sheet
        $objPHPExcel->setActiveSheetIndex(0);


        // Save Excel 2007 file
        echo date('H:i:s') , " Write to Excel2007 format" , EOL;
        $callStartTime = microtime(true);

        $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
        $objWriter->save(str_replace('.php', '.xlsx', __FILE__));
        
        
        $callEndTime = microtime(true);
        $callTime = $callEndTime - $callStartTime;

        echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL;
        echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL;
        // Echo memory usage
        echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL;

    }
    
    
    public function gtAction() {

//        $this->execR('gt.R');
        
        $file = "/var/www/html/total/app/data/gt545b0cdbb3fe8.txt";
        $this->writeGT($file);


    }

    public function crossAction() {
        
        $params = $this -> request -> get();
        if (empty($params['axis'])) {
            echo 'axis is required!';
            return;
        }
        
        $axis = $params['axis'];

        $this->execR('cross.R', $axis);
    
    }


    private function execR($rscript, $params = null) {
    
        $rpath = '/var/www/html/total/app/r/';

        $rscript = $rpath . $rscript;
        $cmd = "R --vanilla --slave --args '$params' < $rscript";
        
        $cmd = escapeshellcmd($cmd);

        exec($cmd, $out, $ret);

        if ($ret == 0 ) {
            echo "$rscript is well done.";
        
        } else {
            echo "erroe is occured while run $rscript.";
        }

    }
    
    
    private function writeGT($file) {
    
        $handle = fopen($file, "r");

        // 空行は集計表の区切りです
        while (($buffer = fgets($handle)) !== false) {
             echo $buffer;
             echo "<br/>";
         }
         if (!feof($handle)) {
             echo "Error: unexpected fgets() fail\n";
         }
       
    }
}         


